#ifndef PROJECTOBJ_H
#define PROJECTOBJ_H

#include "ProjectManager_global.h"

namespace xvs {

class ProjectData;

/**
 * @brief The ProjectObj class 工程类 默认存在入口任务(入口任务不能被删除/改变)
 */
class PROJECTMANAGER_EXPORT ProjectObj : public AbstractProjectObj
{
    Q_OBJECT
public:
    ProjectObj();
    ~ProjectObj();

    QJsonObject Save(const QString&) override;

    int Execute();

public:

    ModuleObj* NewModule();
    void AddModule(const QString& modulefile);//全路径
    void AddModule(ModuleObj* moduleobj);
    void RemoveModule();
    void RemoveAllModule();

    ModuleObj* MainModule();


    void SaveAs();//另存工程
    void Close();//关闭工程

    void ExportToExecute();//导出为可执行工程 二进制可执行文件(打开配方*)

//    QList<QString> ModuleNames();

public:

    QString Version() const;
    void SetVersion(const QString& version);

    QString CreateDataTime() const;

private:
    ProjectData* d_ptr;
};



}

#endif // PROJECTOBJ_H
